<!DOCTYPE html>
<html lang="zh-cn">

<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.container {
width: 300px;
display: flex;
justify-content: space-between;
}

.red-green-light {
display: flex;
flex-direction: column;
justify-content: space-around;
align-items: center;
width: 70px;
height: 240px;
background-color: #333;
border-radius: 5px;
}

.light {
width: 60px;
height: 60px;
border-radius: 50%;
background-color: #fff;
}

.red-green-light .light:nth-child(1).active {
background-color: red;
}

.red-green-light .light:nth-child(2).active {
background-color: green;
}

.red-green-light .light:nth-child(3).active {
background-color: goldenrod;
}
</style>
</head>

<body>
<div class="container">
<div class="red-green-light">
<div class="light red"></div>
<div class="light green"></div>
<div class="light yellow"></div>
</div>

</div>
</body>

<script>

let sj=0

const red=document.querySelector('.red')
const green=document.querySelector('.green')
const yellow=document.querySelector('.yellow')
// 让灯亮的方法
const openLight = node => node.classList.add('active')
// 让灯灭的方法
const offLight = node => node.classList.remove('active')

async function readFiles() {
sj=0
openLight(red)
const f1=await new Promise((resolve, reject) =>{
setTimeout(function() {
offLight(red)
resolve()
},3000)
})

// clearTimeout(timer)

openLight(green)
const f2=await new Promise((resolve, reject) =>{
setTimeout(function() {
offLight(green)
resolve()
},2000)
})
// clearTimeout(timer2)

openLight(yellow)
const f3=await new Promise((resolve, reject) =>{
setTimeout(function() {
offLight(yellow)
resolve()
},1000)
})
sj=1
}

readFiles()
setInterval(function(){
if(sj==1){
readFiles()
}
},1)
</script>

</html>